Github
Poststypescriptobject type

object type

A set of two-state buttons that can be toggled on or off

객체 설정

타스에서 객체 → interface

Array에서 객체로 변경

1const CARD_NUMBER_INPUT_NAMES = ['first', 'second', 'third', 'four'] as const; 2// *1 3 4type Numbers = typeof CARD_NUMBER_INPUT_NAMES[number] 5// *2

*1 : const는 literal 그 자체를 타입으로 지정한다. const a = 1에서 a의 타입은 1 그 자체가 되고 1이외에 다른 값이 들어갈 수 없다. const의 특성을 잘살린 타입추론

*2: Array타입을 union 타입으로 변환한다. 번호가 매겨진 index에 해당하는 값들을 가져오기 때문에 number를 사용한다.

mapping

1type Number = { 2 [K in typeof CARD_NUMBER_INPUT_NAMES[number]]: string; 3 // [ ]: type -> mapped type 4 // K(아무 문자) in union type 5}; 6 7// Record utility type 8type Number3 = Record<typeof CARD_NUMBER_INPUT_NAMES[number], string>; 9 10// 똑같은거다. 11interface Number2 { 12 first: number; 13 second: number; 14 third: number; 15 fourth: number; 16}

mapped type은 interface로 안된다. type에서만 가능하다.

generic

1type Field<T extends string> = { 2 [K in T]: string; 3}; 4 5type ExpiredDate = Field<typeof EXPIRED_DATE_INPUT_NAMES[number]>;